package Divers;

import general.Fichiers;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.util.ArrayList;
import java.util.Collection;

import utilitaire.UtilitaireFichier;

/**
 * format type :
 *com.inetpsa.cvn.web.actions.configuration.AfficherListeParametreAction=var1;var2;
 *com.inetpsa.cvn.web.actions.ddp.AfficherListeDelaisDeFinancementAction=var3;var1;
 *com.inetpsa.cvn.web.actions.entite.AfficherListeHistoriqueDeviseAction=var4;var5;
 *com.inetpsa.cvn.web.actions.entite.AfficherUneEntiteAdresseAction=var1;var2;
 * @author  : Infotel
 * @version : CVS
 * @since   : 26 mars 09
 */

public class RechercherNomFichier {

	//*****	ENTREE *****//
	private static final String dossierAParcourir = 
		"D:\\DACO\\workspace_17_05_2009\\.metadata";
	
	//"D:\\DACO\\workspace_30_04_2009_FONCTIONNE";
	private static final String listeMotsCle= "launch";
	
	
	private static final String filtreExtensionOK = "*";
	private static final String filtreExtensionKO = "bat";
	//*****	SORTIE *****//
	private static final String cheminFichierSortie = "C:\\Documents and Settings\\DACO\\Bureau";
	private static final String nomFichierSortie = "sortie.txt";
	private static String resultatFichiers;

	
	public static void main(String[] args) {
		System.out.println("Debut de programme");
		resultatFichiers = "";
		try {
			File source = new File(dossierAParcourir+"\\");
			analyseDossier(source);
			Fichiers fichier = new Fichiers(cheminFichierSortie +"\\"+nomFichierSortie);
			fichier.ecrirerFichier(resultatFichiers);
		} catch (Exception e) {
			System.out.println("ERREUR : " + e.getMessage() +", "+e.toString());
		}
		System.out.println("Fin de programme");
		
	}	

	public static boolean analyseDossier(File path) throws Exception { 
		try {
		    if( path.exists() ) { 
	            File[] files = path.listFiles(); 
	            for(int i=0; i<files.length; i++) { 
	            	if(files[i].isDirectory()) { 
	            		analyseDossier(files[i]); 
	                } 
	                else { 
	                	String extension  = UtilitaireFichier.rechercherExtension(files[i].getPath());
	                	if( stringFaitPartiDeLaListe(files[i].getName(), listeMotsCle)) {
		                  	if( !filtreExtensionOK.equals("*") ) {
		                  		if(stringFaitPartiDeLaListe(extension, filtreExtensionOK) ) {
			                  		String resultatFichier = files[i].getPath()+"\n";
			                  		resultatFichiers += resultatFichier;
			                  		System.out.println("fichier trouve :"+ files[i].getPath());
		                  		}
		                   	}
		                  	else if(!stringFaitPartiDeLaListe(extension, filtreExtensionKO) ) {
		                  		String resultatFichier = files[i].getPath()+"\n";
		                   		resultatFichiers += resultatFichier;
		                   		System.out.println("fichier trouve :"+ files[i].getPath());
	                  		}
	                	}
                    } 
	            } 
	        } 
		} catch (Exception e) {
			throw e;
		}
	    return true; 
	}
	
	/**
	 *  regarde si la variable est deja presente dans la liste
	 * @param Variable
	 * @param listeVariables
	 * @return
	 * @throws Exception
	 */
	private static boolean stringFaitPartiDeLaListe(String  variable, String listeVariables) throws Exception{
		boolean resultat = false;
		try {
			variable = variable.toLowerCase();
			listeVariables = listeVariables.toLowerCase();
			String[] tabListeVariables = listeVariables.split(";");
			for (int i = 0 ; i < tabListeVariables.length ; i++) {
				if( variable.contains(tabListeVariables[i]) ) {
					resultat = true;
				}
			}
		} catch (Exception e) {
			throw e;
		}
		return resultat;
	}
	
	


	
	
}




